var map;
var mouseTool;
var curType=0;// 0 点  1线  2 面
var curAreaType=0;//0矩形 1圆    2多边形
var curEditObj;
var isinitPonit=1; //点表是否初始化
var isinitLine=0; //线表是否初始化
var isinitArea=0; //区域表是否初始化
var linePointArray=[];  //线点集合
var linePointArrayStr=""; //线点集合参数字符串
var qdlongitude = "";  //线开始经度
var qdlatitude = "";   //线开始纬度
var zdlongitude = "";  //线结束经度
var zdlatitude = "";   //线结束纬度
var AreaPointArray=[];  //区域点集合
var AreaPointArrayStr="";  //区域点集合参数字符串

var GlobalMarkerCache=[];//覆盖物缓存

var curLineType;  //当前线路类型
var curLineSEType;//起点OR终点
var isDhLine=false;//是否为导航点
var startPointLngDH=0;//导航起点经度
var startPointLatDH=0;//导航起点纬度
var endPointLngDH=0;//导航终点经度
var endPointLatDH=0;//导航终点纬度
var driving;//行车规划
var isDHflag=false; //是否已经导航
var drivingObj;//导航返回数据
var cityCenter=localStorage.getItem('cityMapCenter').split(',');
$(function(){
//	try{
    sliderH();         //计算左边栏高度
    initMatter();      //初始化
    map = new AMap.Map('mymap', {
        resizeEnable: true,
        zoom:11,
        center: cityCenter
    });
    try{
        map.plugin(["AMap.ToolBar"], function() {
            map.addControl(new AMap.ToolBar());
        });
        if(location.href.indexOf('&guide=1')!==-1){
            map.setStatus({scrollWheel:false})
        }
    }catch(e){

    }

    driving = new AMap.Driving({
        map: map,
        panel: "panel"
    });
    driving.on('complete', drivingResult)
    $('.modal').on('hidden.bs.modal', function () {
        $("#lineStartPosition").val("");
        $("#lineEndPosition").val("");
        $("#panel").html("");
        clearCustomMapPoint();
        clearCustomPoint();
        clearCustomLine();
        clearAllMarker();
        isDhLine=false;
        isDHflag=false;

    })

//	}catch(e){

//	}
});

/**
 * 计算各div高度的高度
 * */
function sliderH(){
    var winH = $(window).height();
    var sliderH = winH - 76;
    $('.content').css({
        'height' : sliderH + 'px'
    });

    var mapH = sliderH - 271;
    $('#mymap').height(mapH);
}


/**
 * 初始化物流地图事件
 * */
function initMatter(){
    $("#searchTxt").focus(function(e) {
        if (this.value == "搜索:名称") {
            $(this).val("").css("color", "black");
        }
    }).blur(function() {
        if (this.value == "") {
            $(this).val("搜索:名称").css("color", "#c0c0c0");
        }
    }).keyup(function(e) {
        if (e.keyCode == "13") {
            searchCustomInfo();
        }
    });

    $("#searchBtn").bind("click", function(){  // 搜索
        searchCustomInfo();
    });

    $("#customMapPointTable").flexigrid({
        dataType : 'json',
        colModel : [{
            display : '序号',
            name : 'indexNum',
            width : 50,
            sortable : true,
            align : 'left'
        },{
            display : '操作',
            name : 'Handler',
            width : 120,
            sortable : false,
            align : 'left',
            paramcolnames : ['id'],
            handlefunction:formmatActionPoint
        },{
            display : '自定义编号',
            name : 'customcode',
            width : 120,
            sortable : false,
            align : 'left'
        },{
            display : '名称',
            name : 'name',
            width : 120,
            sortable : false,
            align : 'left'
        },{
            display : '类型',
            name : 'maptype',
            width : 100,
            sortable : false,
            align : 'left',
            paramcolnames : ['maptype'],
            handlefunction:formatMapTypeAction
        },{
            display : '半径',
            name : 'radius',
            width : 100,
            sortable : false,
            align : 'left'
        }/*,{
            display : '面积',
            name : 'area',
            width : 100,
            sortable : false,
            align : 'left'
        }*/,{
            display : '纬度',
            name : 'lat',
            width : 100,
            sortable : false,
            align : 'left'
        },{
            display : '经度',
            name : 'lon',
            width : 100,
            sortable : false,
            align : 'left'
        },{
            display : '位置',
            name : 'address',
            width : 350,
            sortable : false,
            align : 'left'
        },{
            display : '备注',
            name : 'remark',
            width : 220,
            sortable : false,
            align : 'left'
        }],
        resizable : false,
        sortname : "id",// 第一次加载数据时排序列
        sortorder : "desc",// 第一次加载数据时排序类型
        usepager : false,// 是否分页，默认为true。
        showToggleBtn : false,
        showTableToggleBtn : false,// 是否显示收起/打开按钮,默认不显示。
        rowId : 'id',// 多选框绑定行的id,只有checkbox : true时才有效。
        width : 'auto',// 表格宽度
        singleSelect : true,//是否只能选中一行
        titDisplay:false,
        onSuccess : function(data){

        },
        onSelectRow : function(row){
            customMapPointClick(row);
        },
        onSelectAllRow : function(data){

        }
    });

    reloadMapPoint();
}


/**
 * 点操作列
 * */
function  formmatActionPoint(id){
    var handleStr = "";

    handleStr = '<a href="javascript:void(0)" onclick="updateMapPoint('+id+')" title="" >修改</a>&nbsp;&nbsp;<a href="javascript:void(0)" onclick="deleteMapPoint('+id+')" title="" >删除</a>';

    return handleStr;
};

/**
 * 线操作列
 * */
function  formmatActionLine(id){
    var handleStr = "";

    handleStr = '<a href="javascript:void(0)" onclick="updateMapLine('+id+')" title="" >修改</a>&nbsp;&nbsp;<a href="javascript:void(0)" onclick="deleteMapLine('+id+')" title="" >删除</a>';

    return handleStr;
};

/**
 * 面操作列
 * */
function  formmatActionArea(id){
    var handleStr = "";

    handleStr = '<a href="javascript:void(0)" onclick="updateMapArea('+id+')" title="" >修改</a>&nbsp;&nbsp;<a href="javascript:void(0)" onclick="deleteMapArea('+id+')" title="" >删除</a>';

    return handleStr;
};



/**
 * 格式化类型
 * */
function formatMapTypeAction (maptype)
{
    if(maptype==1){
        return "工厂";
    }else if(maptype==2){
        return "收费站";
    }else if(maptype==3){
        return "仓库";
    }else if(maptype==4){
        return "码头,堆场";
    }else if(maptype==5){
        return "物流园";
    }else if(maptype==6){
        return "其他";
    }else if(maptype==7){
        return "跟踪点";
    }else if(maptype==8){
        return "网点";
    }

}




/**
 * 点线面切换事件
 * */
function clickChangedxm(type){
    $('.mapType').removeClass('active').eq(type).addClass('active');
    curType=type;
    if(type==0){
        $("#customMapPointLiDiv").show();
        $("#customMapLiDiv").hide();
        $("#customLineLiDiv").hide();
    }
    if(type==1){
        $("#customMapPointLiDiv").hide();
        $("#customMapLiDiv").hide();
        $("#customLineLiDiv").show();
        if(isinitLine==0){
            isinitLine=1;
            $("#customLineTable").flexigrid({
                dataType : 'json',
                colModel : [{
                    display : '序号',
                    name : 'indexNum',
                    width : 50,
                    sortable : true,
                    align : 'left'
                },{
                    display : '操作',
                    name : 'Handler',
                    width : 160,
                    sortable : false,
                    align : 'left',
                    paramcolnames : ['id'],
                    handlefunction:formmatActionLine
                },{
                    display : '自定义编号',
                    name : 'customCode',
                    width : 120,
                    sortable : false,
                    align : 'left'
                },{
                    display : '名称',
                    name : 'name',
                    width : 120,
                    sortable : false,
                    align : 'left'
                },{
                    display : '开始位置',
                    name : 'startPoint',
                    width : 350,
                    sortable : false,
                    align : 'left'
                },{
                    display : '结束位置',
                    name : 'endPoint',
                    width : 350,
                    sortable : false,
                    align : 'left'
                },{
                    display : '里程（公里）',
                    name : 'mileage',
                    width : 100,
                    sortable : false,
                    align : 'left',
                    paramcolnames : ['mileage'],
                    handlefunction:formmatMileage
                },{
                    display : '备注',
                    name : 'remark',
                    width : 220,
                    sortable : false,
                    align : 'left'
                }],
                resizable : false,
                sortname : "id",// 第一次加载数据时排序列
                sortorder : "desc",// 第一次加载数据时排序类型
                usepager : false,// 是否分页，默认为true。
                showToggleBtn : false,
                showTableToggleBtn : false,// 是否显示收起/打开按钮,默认不显示。
                rowId : 'id',// 多选框绑定行的id,只有checkbox : true时才有效。
                width : 'auto',// 表格宽度
                singleSelect : true,//是否只能选中一行
                titDisplay:false,
                onSuccess : function(data){

                },
                onSelectRow : function(row){
                    customLineClick(row);
                },
                onSelectAllRow : function(data){

                }
            });
            reloadMapLine();
        }
    }
    if(type==2){
        $("#customMapPointLiDiv").hide();
        $("#customMapLiDiv").show();
        $("#customLineLiDiv").hide();
        if(isinitArea==0){
            isinitArea=1;
            $("#customMapTable").flexigrid({
                dataType : 'json',
                colModel : [{
                    display : '序号',
                    name : 'indexNum',
                    width : 50,
                    sortable : true,
                    align : 'left'
                },{
                    display : '操作',
                    name : 'Handler',
                    width : 160,
                    sortable : false,
                    align : 'left',
                    paramcolnames : ['id'],
                    handlefunction:formmatActionArea
                },{
                    display : '自定义编号',
                    name : 'customcode',
                    width : 120,
                    sortable : false,
                    align : 'left'
                },{
                    display : '名称',
                    name : 'name',
                    width : 120,
                    sortable : false,
                    align : 'left'
                },{
                    display : '类型',
                    name : 'maptype',
                    width : 120,
                    sortable : false,
                    align : 'left',
                    paramcolnames : ['maptype'],
                    handlefunction:formatMapTypeAction
                },{
                    display : '纬度',
                    name : 'lat',
                    width : 100,
                    sortable : false,
                    align : 'left'
                },{
                    display : '经度',
                    name : 'lon',
                    width : 100,
                    sortable : false,
                    align : 'left'
                },{
                    display : '位置',
                    name : 'address',
                    width : 350,
                    sortable : false,
                    align : 'left'
                },{
                    display : '备注',
                    name : 'remark',
                    width : 220,
                    sortable : false,
                    align : 'left'
                }],
                resizable : false,
                sortname : "id",// 第一次加载数据时排序列
                sortorder : "desc",// 第一次加载数据时排序类型
                usepager : false,// 是否分页，默认为true。
                showToggleBtn : false,
                showTableToggleBtn : false,// 是否显示收起/打开按钮,默认不显示。
                rowId : 'id',// 多选框绑定行的id,只有checkbox : true时才有效。
                width : 'auto',// 表格宽度
                titDisplay:false,
                singleSelect : true,//是否只能选中一行
                onSuccess : function(data){

                },
                onSelectRow : function(row){
                    customMapClick(row);
                },
                onSelectAllRow : function(data){

                }
            });

            reloadMapArea();


        }


    }

}

/**
 * 格式化里程
 * */
function formmatMileage(m){
    if(m == null || m == ''){
        return 0;
    }
    return parseFloat(m).toFixed(2);
}


/**
 * 获取查询参数
 * */
function getQueryParam(){
    var searchTxt = $("#searchTxt").val();
    searchTxt = searchTxt == "搜索:名称"?"":searchTxt;

    var paramsGrid = [{
        name : 'name',
        value : searchTxt
    }];

    return paramsGrid;
}

/**
 * 查询
 * */
function searchCustomInfo(){
    clearAllMarker();
    if(curType==0){
        reloadMapPoint();
    }
    if(curType==1){
        reloadMapLine();
    }
    if(curType==2){
        reloadMapArea();
    }
}


function getColumnPoint(){
    return [{
        display : '序号',
        name : 'indexNum',
        width : 50,
        sortable : true,
        align : 'left'
    },{
        display : '自定义编号',
        name : 'customcode',
        width : 120,
        sortable : false,
        align : 'left'
    },{
        display : '名称',
        name : 'name',
        width : 120,
        sortable : false,
        align : 'left'
    },{
        display : '类型',
        name : 'maptype',
        width : 100,
        sortable : false,
        align : 'left'
    },{
        display : '半径',
        name : 'radius',
        width : 100,
        sortable : false,
        align : 'left'
    }/*,{
         display : '面积',
         name : 'area',
         width : 100,
         sortable : false,
         align : 'left'
     }*/,{
        display : '纬度',
        name : 'lat',
        width : 100,
        sortable : false,
        align : 'left'
    },{
        display : '经度',
        name : 'lon',
        width : 100,
        sortable : false,
        align : 'left'
    },{
        display : '位置',
        name : 'address',
        width : 350,
        sortable : false,
        align : 'left'
    },{
        display : '备注',
        name : 'remark',
        width : 220,
        sortable : false,
        align : 'left'
    }];
}

function getColumnLine(){
    return [{
        display : '序号',
        name : 'indexNum',
        width : 50,
        sortable : true,
        align : 'left'
    },{
        display : '自定义编号',
        name : 'customcode',
        width : 120,
        sortable : false,
        align : 'left'
    },{
        display : '名称',
        name : 'name',
        width : 120,
        sortable : false,
        align : 'left'
    },{
        display : '开始位置',
        name : 'startPoint',
        width : 350,
        sortable : false,
        align : 'left'
    },{
        display : '结束位置',
        name : 'endPoint',
        width : 350,
        sortable : false,
        align : 'left'
    },{
        display : '里程（公里）',
        name : 'mileage',
        width : 100,
        sortable : false,
        align : 'left'
    },{
        display : '备注',
        name : 'remark',
        width : 220,
        sortable : false,
        align : 'left'
    }];
}


function getColumnArea(){
    return [{
        display : '序号',
        name : 'indexNum',
        width : 50,
        sortable : true,
        align : 'left'
    },{
        display : '自定义编号',
        name : 'customcode',
        width : 120,
        sortable : false,
        align : 'left'
    },{
        display : '名称',
        name : 'name',
        width : 120,
        sortable : false,
        align : 'left'
    },{
        display : '类型',
        name : 'maptype',
        width : 120,
        sortable : false,
        align : 'left'
    },{
        display : '纬度',
        name : 'lat',
        width : 100,
        sortable : false,
        align : 'left'
    },{
        display : '经度',
        name : 'lon',
        width : 100,
        sortable : false,
        align : 'left'
    },{
        display : '位置',
        name : 'address',
        width : 350,
        sortable : false,
        align : 'left'
    },{
        display : '备注',
        name : 'remark',
        width : 220,
        sortable : false,
        align : 'left'
    }];
}

/**
 * 导出
 * */
function exportMatterInfo(){
    var searchTxt = $("#searchTxt").val();
    searchTxt = searchTxt == "搜索:名称"?"":searchTxt;

    var header1;
    var exptitl="";

    if(curType==0){
        header1 = JSON.stringify(getColumnPoint());
        exptitle="自定义点信息";
    }
    if(curType==1){
        header1 = JSON.stringify(getColumnLine());
        exptitle="自定义线信息";
    }
    if(curType==2){
        header1 = JSON.stringify(getColumnArea());
        exptitle="自定义区域信息";
    }

    var answer = confirm("确定导出当前页面的数据?");
    if(!answer){
        return false;
    }

    //表头
    var colModelList=new Array();
    colModelList.push(header1);
    var colModel= $.toJSON(colModelList);



    var paramsGrid =  {
        name:searchTxt,
        type:curType,
        colModel:colModel,
        title:exptitle,
        imgsrc:null
    };




    post(appCtx+"gis/matter/exportMatterInfo.html",paramsGrid);


}

/**
 * 重载点
 * */

function reloadMapPoint(){
    $("#customMapPointTable").flexOptions({
        url : appCtx + "/gis/matter/queryCustomMapPoint.html",
        newp : 1,// 设置起始页
        params :getQueryParam()
    }).flexReload();// 重新加载
}

/**
 * 重载线
 * */

function reloadMapLine(){
    $("#customLineTable").flexOptions({
        url : appCtx + "/gis/matter/queryCustomLine.html",
        newp : 1,// 设置起始页
        params :getQueryParam()
    }).flexReload();// 重新加载
}

/**
 * 重载面
 * */
function reloadMapArea(){
    $("#customMapTable").flexOptions({
        url : appCtx + "/gis/matter/queryCustomMap.html",
        newp : 1,// 设置起始页
        params :getQueryParam()
    }).flexReload();// 重新加载
}


/**
 * 点列表点击
 * */
function customMapPointClick(obj){
    clearAllMarker();
    var point = new AMap.LngLat(obj.lon,obj.lat);
    setCenter(point,15);
    var iconUrl= appCtx+"resources/images/mapTool/home_icon_location.png" ;

    var content = '名称：'+obj.name+'</br>类型：'+formatMapTypeAction(obj.maptype)+'</br>半径：'+obj.radius+'米</br>位置：'+obj.address+'</br>备注：'+obj.remark;



    if(obj.radius>0){
        var circle = new AMap.Circle({
            center: point,// 圆心位置
            radius: obj.radius, //半径
            strokeColor: "blue", //线颜色
            strokeOpacity: 1, //线透明度
            strokeWeight: 3 , //线粗细度
            fillColor: "#ee2200", //填充颜色
            fillOpacity: 0//填充透明度
        });
        circle.setMap(map);
        GlobalMarkerCache.push(circle);
    }

    addMarker(obj.lon,obj.lat,content,iconUrl);


}

/**
 * 面列表点击
 * */
function customMapClick(obj){
    clearAllMarker();
    var point = new AMap.LngLat(obj.lon,obj.lat);
    setCenter(point,15);
    var iconUrl= appCtx+"resources/images/mapTool/home_icon_location.png" ;

    var content = '名称：'+obj.name+'</br>类型：'+formatMapTypeAction(obj.maptype)+'</br>位置：'+obj.address+'</br>备注：'+obj.remark;


    var polygonArr = new Array();//多边形覆盖物节点坐标数组

    var lnglatAry =   (obj.lonlat).split(",");

    for(var i=0;i<lnglatAry.length;i++){
        var  lonlat = lnglatAry[i].split("|");
        var lng  = lonlat[0];
        var lat  = lonlat[1];
        polygonArr.push([lng,lat]);
    }


    if(obj.drawingType=="circle"){ // 圆形
        var  radius = obj.radius!=""?parseFloat(obj.radius):1;
        var circle = new AMap.Circle({
            center: point,// 圆心位置
            radius: radius, //半径
            strokeColor: "blue", //线颜色
            strokeOpacity: 1, //线透明度
            strokeWeight: 3 , //线粗细度
            fillColor: "#ee2200", //填充颜色
            fillOpacity: 0//填充透明度
        });
        circle.setMap(map);
        GlobalMarkerCache.push(circle);
    }else{ // 多边形 或矩形

        var  polygon = new AMap.Polygon({
            path: polygonArr,//设置多边形边界路径
            strokeColor: "#FF33FF", //线颜色
            strokeOpacity: 0.2, //线透明度
            strokeWeight: 3,    //线宽
            fillColor: "#1791fc", //填充色
            fillOpacity: 0.35//填充透明度
        });
        polygon.setMap(map);
        GlobalMarkerCache.push(polygon);
    }

    addMarker(obj.lon,obj.lat,content,iconUrl);



}


/**
 * 线列表点击
 * */
function customLineClick(obj){
    clearAllMarker();
    var point = new AMap.LngLat(obj.qdlongitude,obj.qdlatitude);
    setCenter(point,15);
    var iconUrl= appCtx+"resources/images/mapTool/start.png";//appCtx+"resources/images/mapTool/home_icon_location.png" ;
    var iconUrlz= appCtx+"resources/images/mapTool/end.png" ; //"http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png" ;

    var content = '名称：'+obj.name+'</br>起点：'+obj.startPoint+'</br>里程：'+obj.mileage+'</br>备注：'+obj.remark;
    var contentz = '名称：'+obj.name+'</br>终点：'+obj.endPoint+'</br>里程：'+obj.mileage+'</br>备注：'+obj.remark;

    // 取得线路中的点
    $.ajax({
        type : 'post',
        async : true,
        data :[{name : 'lineID',value :obj.id}],
        url :  appCtx + "/gis/matter/queryAllCustomLinePointById.html",
        cache : false,
        dataType : "json",
        success : function(data) {
            if(data.data!=null && data.data.length>0){
                var polylinePointsArray = [];
                for(var i=0;i<data.data.length;i++){// 线路
                    polylinePointsArray.push([data.data[i].longitude,data.data[i].latitude]);
                }

                var polyline = new AMap.Polyline({
                    path: polylinePointsArray,          //设置线覆盖物路径
                    strokeColor: "#3366FF", //线颜色
                    strokeOpacity: 1,       //线透明度
                    strokeWeight: 5,        //线宽
                    strokeStyle: "solid",   //线样式
                    strokeDasharray: [10, 5] //补充线样式
                });
                polyline.setMap(map);

                GlobalMarkerCache.push(polyline);
            }
        }
    });


    addMarker(obj.qdlongitude,obj.qdlatitude,content,iconUrl);
    addMarker(obj.zdlongitude,obj.zdlatitude,contentz,iconUrlz);
}



/**
 * 增加覆盖物
 *
 */
function addMarker(longitude,latitude,content,iconUrl){
    var infoWindow = new AMap.InfoWindow({offset: new AMap.Pixel(0, -30)});

    var marker = new AMap.Marker({
        position: [longitude,latitude],
        icon: iconUrl
    });
    marker.setMap(map);
    marker.content =content;
    marker.on('click', function(e){
        infoWindow.setContent(e.target.content);
        infoWindow.open(map, e.target.getPosition());
    });
    GlobalMarkerCache.push(marker);
}






/**
 * 删除所有覆盖物
 *
 */
function clearAllMarker(){
    //map.remove(GlobalMarkerCache);
    map.clearMap();
    GlobalMarkerCache=[];
}

/**
 * 设置地图中心点
 * @param data  定位数据
 */
function setCenter(point,zoom){
    map.setZoomAndCenter(zoom,point);
}


/**
 * 使用CSS默认样式定义地图上的鼠标样式
 * */
function defaultCursor(){
    map.setDefaultCursor("pointer");
}

/**
 * 自定义鼠标样式图标
 * */
function switchCursor() {
    map.setDefaultCursor("crosshair");
}


/**
 * 添加画图事件
 * */
function addMatterInfo(){
    clearCustomMapPoint();
    clearCustomPoint();
    clearCustomLine();
    clearAllMarker();
    //在地图中添加MouseTool插件
    mouseTool = new AMap.MouseTool(map);
    mouseTool.on('draw', endAddMatterInfo);
    if(curType==0){
        mouseTool.marker({offset:new AMap.Pixel(-14,-11)});
        switchCursor();
    }
    if(curType==1){
        $('#matterLineSelectModal').modal('show');
    }
    if(curType==2){
        $('#matterAreaSelectModal').modal('show');
    }
}


/**
 * 选择添加区域类型
 * */
function setCurMatterMap(index){
    curAreaType=index;
    $('#matterAreaSelectModal').modal('hide');
    if(curAreaType==0){
        mouseTool.rectangle();
        switchCursor();
    }
    if(curAreaType==1){
        mouseTool.circle();
        switchCursor();
    }
    if(curAreaType==2){
        mouseTool.polygon();
        switchCursor();
    }
}



function setCurMatterLine(index){
    curLineType=index;
    $('#matterLineSelectModal').modal('hide');
    if(curLineType==0){
        $('#matterLineDHModal').modal('show');
        $(".modal-backdrop").remove();
        isDhLine=true;
    }
    if(curLineType==1){
        mouseTool.polyline();
        switchCursor();
    }
}




function setlinePosition(index){
    curLineSEType=index;
    if(index==0){
        mouseTool.marker({offset:new AMap.Pixel(-14,-11)});
        switchCursor();
    }else{
        mouseTool.marker({offset:new AMap.Pixel(-14,-11)});
        switchCursor();
    }
}




function dhCustomLine(){
    var n=$("#selectDHTypeSel").val();
    if(n==1){
        driving.setPolicy(AMap.DrivingPolicy.LEAST_TIME);
    }
    if(n==2){
        driving.setPolicy(AMap.DrivingPolicy.LEAST_FEE);
    }
    if(n==3){
        driving.setPolicy(AMap.DrivingPolicy.LEAST_DISTANCE);
    }
    if(n==4){
        driving.setPolicy(AMap.DrivingPolicy.REAL_TRAFFIC);
    }

    driving.search(new AMap.LngLat(startPointLngDH,startPointLatDH), new AMap.LngLat(endPointLngDH,endPointLatDH));
}


function drivingResult(obj){
    drivingObj=obj;
    isDHflag=true;
}

function gotoEditCustomLine(){
    if(isDHflag&&drivingObj!=null){
        linePointArray=[];  //线点集合
        linePointArrayStr=""; //线点集合参数字符串
        qdlongitude=drivingObj.start.location.lng;
        qdlatitude=drivingObj.start.location.lat;
        zdlongitude=drivingObj.end.location.lng;
        zdlatitude=drivingObj.end.location.lat;

        getAddress("lStartPlace",qdlongitude,qdlatitude);
        getAddress("lEndPlace",zdlongitude,zdlatitude);

        linePointArray.push(qdlongitude+"|"+qdlatitude);
        for(var i=0;i<drivingObj.routes.length;i++){
            for(var m=0;m<drivingObj.routes[i].steps.length;m++){
                for(var n=0;n<drivingObj.routes[i].steps[m].path.length;n++){
                    linePointArray.push(drivingObj.routes[i].steps[m].path[n].lng+"|"+drivingObj.routes[i].steps[m].path[n].lat);
                }
            }
        }

        linePointArray.push(zdlongitude+"|"+zdlatitude);

        linePointArrayStr = linePointArray.join(",");
        $('#matterLineDHModal').modal('hide');
        $('#matterLineModal').modal('show');
    }else{
        global.ajaxLoading.pop("请先导航，再进行保存！",false,2000);
    }

}


/**
 * 结束画图
 * */
function endAddMatterInfo(obj){
    mouseTool.close(false);
    defaultCursor();
    if(isDhLine){
        if(curLineSEType==0){
            startPointLngDH=obj.obj.G.position.lng;
            startPointLatDH=obj.obj.G.position.lat;
            getAddress("lineStartPosition",startPointLngDH,startPointLatDH);
            clearAllMarker();
            if(startPointLngDH!=0&&startPointLatDH!=0){
                var iconUrl= appCtx+"resources/images/mapTool/start.png" ;
                var content = "起点";
                addMarker(startPointLngDH,startPointLatDH,content,iconUrl);
            }
            /*if(endPointLngDH!=0&&endPointLatDH!=0){
                var iconUrlz= appCtx+"resources/images/mapTool/end.png" ;
                var contentz = "终点";
                addMarker(endPointLngDH,endPointLatDH,contentz,iconUrlz);
            }*/
        }
        if(curLineSEType==1){
            endPointLngDH=obj.obj.G.position.lng;
            endPointLatDH=obj.obj.G.position.lat;
            getAddress("lineEndPosition",endPointLngDH,endPointLatDH);
            clearAllMarker();
            if(startPointLngDH!=0&&startPointLatDH!=0){
                var iconUrl= appCtx+"resources/images/mapTool/start.png" ;
                var content = "起点";
                addMarker(startPointLngDH,startPointLatDH,content,iconUrl);
            }
            if(endPointLngDH!=0&&endPointLatDH!=0){
                var iconUrlz= appCtx+"resources/images/mapTool/end.png" ;
                var contentz = "终点";
                addMarker(endPointLngDH,endPointLatDH,contentz,iconUrlz);
            }
        }

    }else{
        mouseTool.close(false);
        defaultCursor();
        linePointArray=[];  //线点集合
        linePointArrayStr=""; //线点集合参数字符串
        AreaPointArray=[];  //区域点集合
        AreaPointArrayStr="";  //区域点集合参数字符串
        qdlongitude="";
        qdlatitude="";
        zdlongitude="";
        zdlatitude="";
        curEditObj=obj;
        if(curType==0){
            $("#mLon").val(obj.obj.G.position.lng);
            $("#mLat").val(obj.obj.G.position.lat);
            getAddress("mPlace",obj.obj.G.position.lng,obj.obj.G.position.lat);
            $('#matterPointModal').modal('show');
        }
        if(curType==1){

            if(obj.obj.G.path!=null&&obj.obj.G.path.length>0){
                var qd = obj.obj.G.path[0];//起点
                qdlongitude = qd.lng;
                qdlatitude = qd.lat;

                var zd = obj.obj.G.path[obj.obj.G.path.length-1];//终点
                zdlongitude = zd.lng;
                zdlatitude = zd.lat;

                getAddress("lStartPlace",qdlongitude,qdlatitude);
                getAddress("lEndPlace",zdlongitude,zdlatitude);

                for(var i =0 ;i<obj.obj.G.path.length;i++){
                    linePointArray.push(obj.obj.G.path[i].lng+"|"+obj.obj.G.path[i].lat);
                }
                linePointArrayStr = linePointArray.join(",");
            }
            $('#matterLineModal').modal('show');
        }
        if(curType==2){
            if(curAreaType==1){
                $("#aLon").val(obj.obj.Qi.center.lng);
                $("#aLat").val(obj.obj.Qi.center.lat);
                $("#txtRadius").val(obj.obj.Qi.radius.toFixed(2));
                getAddress("aPlace",obj.obj.Qi.center.lng,obj.obj.G.center.lat);
            }
            if(curAreaType==2){
                var point=drawCenterMarker(obj.obj.G.path);
                getAddress("aPlace",point.lng,point.lat);

                var path  = obj.obj.G.path;
                if(path!=null&&path.length>0){
                    for(var  i=0;i<path.length;i++){
                        AreaPointArray.push(path[i].lng +"|"+path[i].lat);
                    }
                    AreaPointArrayStr = AreaPointArray.join(",");
                }

            }
            if(curAreaType==0){
                var point=drawCenterMarker(obj.obj.Qi.path);
                getAddress("aPlace",point.lng,point.lat);

                var path  = obj.obj.Qi.path;
                if(path!=null&&path.length>0){
                    for(var  i=0;i<path.length;i++){
                        AreaPointArray.push(path[i].lng +"|"+path[i].lat);
                    }
                    AreaPointArrayStr = AreaPointArray.join(",");
                }
            }
            $('#matterAreaModal').modal('show');
        }
    }

}




/**
 * 地址解析
 * */
function getAddress(ctrl,longitude,latitude){
    var ctrl="#"+ctrl;
    var geocoder = new AMap.Geocoder({
        radius: 1000,
        extensions: "all"
    });
    geocoder.getAddress(new AMap.LngLat(longitude,latitude), function(status, result) {
        if (status === 'complete' && result.info === 'OK') {
            var address=result.regeocode.formattedAddress;
            $(ctrl).val(address);
        }
    });

}

/**
 * 点更新
 * */
function updateMapPoint(id){
    $.ajax({
        type : 'post',
        async : false,
        url : appCtx + "/gis/matter/getCustomMapPointById.html",
        cache : false,
        data:{"id":id},
        dataType : "JSON",
        success : function(data) {
            $("#custommappointAction").val('update');
            $("#custommappointID").val(data.data.id);
            $("#mCode").val(data.data.customcode);
            $("#mName").val(data.data.name);
            $("#mNameColor").attr("color",data.data.namecolor).css("background-color",data.data.namecolor);
            $("#mLon").val(data.data.lon);
            $("#mLat").val(data.data.lat);
            $("#mImg").attr("src",data.data.mapiconid);
            $("#mCategotySel").val(data.data.maptype);
            $('#mDepartment').val(data.data.workunitid);
            $("#mPlace").val(data.data.address);
            $("#mRangeSel").val(data.data.radius);
            $("#mRemark").val(data.data.remark);

            $('#matterPointModal').modal('show');
        }
    });
}


/**
 * 线更新
 * */
function updateMapLine(id){
    $.ajax({
        type : 'post',
        async : false,
        url : appCtx + "/gis/matter/getCustomLineById.html",
        cache : false,
        data:{"id":id},
        dataType : "JSON",
        success : function(data) {

            $("#customLineAction").val('update');
            $("#customLineID").val(data.data.id);

            var strokeWeight  = $("#strokeWeightLI").val();
            $("#lName").val(data.data.name);
            if(data.data.nameColor != ""){
                $("#lNameColor").attr("color",data.data.nameColor).css("background-color",data.data.nameColor);
            }
            $("#lCustomcode").val(data.data.customCode);
            $("#mileageSpan").val(data.data.mileage);
            $("#lStartPlace").val(data.data.startPoint);
            $("#lEndPlace").val(data.data.endPoint);
            $("#lRemark").val(data.data.remark);
            $('#lDepartment').val(data.data.workUnitID);
            $('#matterLineModal').modal('show');
        }
    });
}

/**
 * 面更新
 * */
function updateMapArea(id){
    $.ajax({
        type : 'post',
        async : false,
        url : appCtx + "/gis/matter/getCustomMapById.html",
        cache : false,
        data:{"id":id},
        dataType : "JSON",
        success : function(data) {

            $("#custommapAction").val('update');
            $("#custommapID").val(data.data.id);
            $("#aCode").val(data.data.customcode);
            $("#aName").val(data.data.name);
            if(data.data.namecolor != ""){
                $("#aNameColor").attr("color",data.data.namecolor).css("background-color",data.data.namecolor);
            }
            $("#aLon").val(data.data.lon);
            $("#aLat").val(data.data.lat);
            $("#aImg").attr("src",data.data.mapiconid);
            $("#aCategotySel").val(data.data.maptype);
            $('#aDepartment').val(data.data.workunitid);
            $("#aPlace").val(data.data.address);

            $("#aRangeSel").val(data.data.radius);
            $("#aRemark").val(data.data.remark);
            $("#txtRadius").val(data.data.radius);
            $("#aDrawingType").val(data.data.drawingType);
            $('#matterAreaModal').modal('show');


        }
    });
}

/**
 * 删除点
 * */
function deleteMapPoint(id){
    var answer = confirm("确定要删除吗？删除后将无法恢复！");
    if(answer){
        delCustomMapPoints(id);
    }
}

/**
 * 删除线
 * */
function deleteMapLine(id){
    var answer = confirm("确定要删除吗？删除后将无法恢复！");
    if(answer){
        delCustomLines(id);
    }
}

/**
 * 删除面
 * */
function deleteMapArea(id){
    var answer = confirm("确定要删除吗？删除后将无法恢复！");
    if(answer){
        delCustomMaps(id);
    }
}


// 删除自定义点
function delCustomMapPoints(id){

    $.ajax({
        type : 'post',
        async : true,
        data :[{
            name : 'id',
            value :id
        }],
        url : appCtx + "/gis/matter/delCustomMapPoint.html",
        cache : false,
        dataType : "json",
        success : function(data) {
            clearAllMarker();
            reloadMapPoint();
            global.ajaxLoading.pop("删除成功！",false,2000);
        }
    });
}



/**
 * 删除自定义区域
 * */
function delCustomMaps(id){

    $.ajax({
        type : 'post',
        async : true,
        data :[{
            name : 'id',
            value :id
        }],
        url : appCtx + "/gis/matter/delCustomMap.html",
        cache : false,
        dataType : "json",
        success : function(data) {
            global.ajaxLoading.pop("删除成功！",false,2000);
            clearAllMarker();
            reloadMapArea();
        }
    });
}


/**
 * 删除自定义点
 * */
function delCustomLines(id){
    $.ajax({
        type : 'post',
        async : true,
        data :[{
            name : 'id',
            value :id
        }],
        url : appCtx + "/gis/matter/delCustomLine.html",
        cache : false,
        dataType : "json",
        success : function(data) {
            if(data.code==2){
                global.ajaxLoading.pop("操作失败！数据已被关联，无法删除！",false,2000);
            }else{
                global.ajaxLoading.pop("删除成功！",false,2000);
            }
            clearAllMarker();
            reloadMapLine();

        }
    });
}



/**
 * 保存自定义点
 * */
function saveCustomMapPoint(){


    var  action = $("#custommappointAction").val();
    var  id = $("#custommappointID").val();
    var  customcode = $("#mCode").val();
    var  name = $("#mName").val();
    var  maplayerid = 1
    var  lon = $("#mLon").val();
    var  lat = $("#mLat").val()
    var  mapiconid = $("#mImg").attr("src");
    var  maptype = $("#mCategotySel").val();
    var  address = $("#mPlace").val();
    var  namecolor = $("#mNameColor").attr("color");
    var  radius = $("#mRangeSel").val();
    var  remark = $("#mRemark").val();

    if($.trim(name)==""){
        global.ajaxLoading.pop("请输入名称！",false,2000);
        return ;
    }

    if(isNaN(customcode)){
        global.ajaxLoading.pop("自编号请输入数字！",false,2000);
        return ;
    }

    if(lon==""){
        global.ajaxLoading.pop("请输入经度！",false,2000);
        return ;
    }
    if(lat==""){
        global.ajaxLoading.pop("请输入纬度！",false,2000);
        return ;
    }

    // 查询参数
    var params = [
        {
            name : 'action',
            value : action
        },{
            name : 'id',
            value : id
        },{
            name : 'name',
            value : name
        },{
            name : 'customcode',
            value : customcode
        },{
            name : 'maplayerid',
            value : maplayerid
        },{
            name : 'lon',
            value : lon
        },{
            name : 'lat',
            value : lat
        },{
            name : 'mapiconid',
            value : mapiconid
        },{
            name : 'maptype',
            value : maptype
        },{
            name : 'address',
            value : address
        },{
            name : 'namecolor',
            value : namecolor
        },{
            name : 'radius',
            value : radius
        },{
            name : 'remark',
            value : remark
        }];
    $.ajax({
        type : 'post',
        async : false,
        url : appCtx + "/gis/matter/saveCustomMapPoint.html",
        cache : false,
        data:params,
        dataType : "JSON",
        success : function(data) {
            if(data.code==0){
                global.ajaxLoading.pop(data.msg,false,2000);
                $('#matterPointModal').modal('hide');
                clearCustomMapPoint();
                reloadMapPoint();
                clearAllMarker();
            }else{
                global.ajaxLoading.pop(data.msg,false,2000);
            }


        }
    });
}

/*function checkCustomcode(){
	var flag = true;
	var  action = $("#custommappointAction").val(); 
	var  id = $("#custommappointID").val(); 
	var  customcode = $("#mCode").val(); 
	var  workunitid = $('#mDepartment').combotree('getValue');
	$.ajax({
		type : 'post',
		async : false,
		url : appCtx + "/gis/matter/isExistCustomcode.html",
		dataType : "JSON",
		data	: {"customcode" : customcode,"id":id,"action":action,"workunitid":workunitid},
		success : function(res) {
			if(res === true || res == "true"){
				flag = false;
			}
		}
	});
	
	return flag;
}*/


/**
 * 保存自定义区域
 * */
function saveCustomMap(){
    var  action = $("#custommapAction").val();
    var  id = $("#custommapID").val();
    var  customcode = $("#aCode").val();
    var  name = $("#aName").val();
    var  namecolor = $("#aNameColor").attr("color");
    var  maplayerid = 1;
    var  lon = $("#aLon").val();
    var  lat = $("#aLat").val();
    var  mapiconid = $("#aImg").attr("src");
    var  maptype = $("#aCategotySel").val();
    var  address = $("#aPlace").val();
    var  radius = $("#txtRadius").val();
    var  remark = $("#aRemark").val();
    var drawingType="";
    if(curAreaType==0){
        drawingType="rect";
    }
    if(curAreaType==1){
        drawingType="circle";
    }
    if(curAreaType==2){
        drawingType="polygon";
    }
    if($.trim(name)==""){
        global.ajaxLoading.pop("请输入名称！",false,2000);
        return ;
    }

    if(isNaN(customcode)){
        global.ajaxLoading.pop("自编号请输入数字！",false,2000);
        return ;
    }

    if(lon==""){
        global.ajaxLoading.pop("请输入经度！",false,2000);
        return ;
    }
    if(lat==""){
        global.ajaxLoading.pop("请输入纬度！",false,2000);
        return ;
    }


    // 查询参数
    var params = [
        {
            name : 'action',
            value : action
        },{
            name : 'id',
            value : id
        },{
            name : 'name',
            value : name
        },{
            name : 'customcode',
            value : customcode
        },{
            name : 'maplayerid',
            value : maplayerid
        },{
            name : 'drawingType',
            value : drawingType
        },{
            name : 'lon',
            value : lon
        },{
            name : 'lat',
            value : lat
        },{
            name : 'lonlat',
            value : AreaPointArrayStr
        },{
            name : 'mapiconid',
            value : mapiconid
        },{
            name : 'maptype',
            value : maptype
        },{
            name : 'address',
            value : address
        },{
            name : 'namecolor',
            value : namecolor
        },{
            name : 'radius',
            value : radius
        },{
            name : 'remark',
            value : remark
        }];
    $.ajax({
        type : 'post',
        async : false,
        url : appCtx + "/gis/matter/saveCustomMap.html",
        cache : false,
        data:params,
        dataType : "JSON",
        success : function(data) {
            if(data.code==0){
                global.ajaxLoading.pop(data.msg,false,2000);
                $('#matterAreaModal').modal('hide');
                clearCustomPoint();
                reloadMapArea();
                clearAllMarker();
            }else{
                global.ajaxLoading.pop(data.msg,false,2000);
            }

        }
    });
}



/**
 * 保存自定义线路
 * */
function saveLine(){
    var  action = $("#customLineAction").val();
    var  id = $("#customLineID").val();

    var strokeWeight  = $("#strokeWeightLI").val();
    var name =  $("#lName").val();
    var nameColor =  $("#lNameColor").attr("color");
    var strokeColor = $("#lNameColor").attr("color");
    var customCode =  $("#lCustomcode").val();
    var mileage =  $("#mileageSpan").val();
    var startPoint =  $("#lStartPlace").val();
    var endPoint =  $("#lEndPlace").val();
    var remark =  $("#lRemark").val();
    if(name==""){
        global.ajaxLoading.pop("请输入名称！",false,2000);
        return ;
    }

    if (isNaN(customCode)){
        global.ajaxLoading.pop("自编号请输入数字！",false,2000);
        return ;
    }
    if(startPoint == ""){
        global.ajaxLoading.pop("请输入开始位置！",false,2000);
        return ;
    }
    if(endPoint == ""){
        global.ajaxLoading.pop("请输入结束位置！",false,2000);
        return ;
    }
    // 查询参数
    var params = [ {
        name : 'action',
        value : action
    },{
        name : 'id',
        value : id
    },{
        name : 'strokeWeight',
        value : strokeWeight
    },{
        name : 'name',
        value : name
    },{
        name : 'nameColor',
        value : nameColor
    },{
        name : 'strokeColor',
        value : strokeColor
    },{
        name : 'customCode',
        value : customCode
    },{
        name : 'mileage',
        value : mileage
    },{
        name : 'startPoint',
        value : startPoint
    },{
        name : 'endPoint',
        value : endPoint
    },{
        name : 'qdlongitude',
        value : qdlongitude
    },{
        name : 'qdlatitude',
        value : qdlatitude
    },{
        name : 'zdlongitude',
        value : zdlongitude
    },{
        name : 'zdlatitude',
        value : zdlatitude
    },{
        name : 'remark',
        value : remark
    },{
        name : 'customLinePointStr',
        value : linePointArrayStr

    }];
    $.ajax({
        type : 'post',
        async : false,
        url : appCtx + "/gis/matter/saveLine.html",
        cache : false,
        data:params,
        dataType : "JSON",
        success : function(data) {
            if(data.code==0){
                global.ajaxLoading.pop(data.msg,false,2000);
                $('#matterLineModal').modal('hide');
                clearCustomLine();
                reloadMapLine();
                clearAllMarker();
            }else{
                global.ajaxLoading.pop(data.msg,false,2000);
            }

        }
    });
}


/**
 * 清除自定义点面板内容
 * */
function clearCustomMapPoint(){
    $("#custommappointID").val('');
    $("#custommappointAction").val('insert');
    $("#mCode").val('');
    $("#mName").val('');
    $("#mLon").val('');
    $("#mLat").val('')
    $("#mCategotySel").val('');
    $("#mDepartment").val('');
    $("#mPlace").val('');
    $("#mAcreageTd").attr("acreage",0.126).text('0.126km²');
    $("#mRangeSel").val(100);
    $("#mRemark").val('');
}

/**
 * 清除自定义点面板内容
 * */
function clearCustomPoint(){
    //自定义点
    $("#custommapID").val('');
    $("#custommapAction").val('insert');
    $("#aCode").val('');
    $("#aName").val('');
    $("#aLon").val('');
    $("#aLat").val('')
    $("#aCategotySel").val('');
    $("#aDepartment").val('');
    $("#aPlace").val('');
    $("#aRangeSel").val(100);
    $("#aRemark").val('');
}

/**
 * 清除自定义点面板内容
 * */
function clearCustomLine(){
    //自定义点
    $("#customLineID").val('');
    $("#customLineAction").val('insert');
    $("#strokeWeightLI").attr('class',"linetype1");
    $("#mileageSpan").val('');
    $("#lName").val('');
    $("#lNameColor").css("background-color","#000000");
    $("#lCustomcode").val('');
    $('#lDepartment').val('');
    $("#lStartPlace").val('');
    $("#lEndPlace").val('');
    //$("#mNameColor").attr("color");
    //$("#mColor").attr("color");
    $("#lRemark").val('');
}



/**
 * 画中心点
 * */
function drawCenterMarker(pointPath){
    var latAry = []//纬度
    var lngAry = []//经度
    var centerPoint;
    if(pointPath!=null){
        for(var i=0;i<pointPath.length;i++){
            latAry.push(pointPath[i].lat);
            lngAry.push(pointPath[i].lng);
        }
        //计算中心点
        centerPoint =  getCenterPointByAry(latAry,lngAry);
    }
    if(centerPoint!=null){
        $("#aLon").val(centerPoint.lng);
        $("#aLat").val(centerPoint.lat);
    }

    return centerPoint;
}

/**
 * 计算中心点
 * */
function getCenterPointByAry(latAry,lngAry){
    try{
        //排序
        latAry.sort(function(a, b) {
            return a - b
        });
        lngAry.sort(function(a, b) {
            return a - b
        });
        var minLat = latAry[0];
        var minLon = lngAry[0];
        var maxLat = latAry[latAry.length - 1];
        var maxLon = lngAry[lngAry.length - 1];
        var cLat = latAry[0] / 2 + latAry[latAry.length - 1] / 2;
        var cLng = lngAry[0] / 2 + lngAry[lngAry.length - 1] / 2;
        cLng = cLng.toFixed(6);
        cLat = cLat.toFixed(6);
        var obj = {
            lng: cLng,
            lat: cLat
        }
        return obj;
    }catch(ex){
        console.log(ex);
        return null;
    }
}
